package com.learning.lesson05kmp;

/**
 * 字符串匹配问题-暴力匹配
 *
 * @author Zongheng Ma
 * @date 2020/11/16
 */
public class ViolentMatch {

    public static void main(String[] args) {
        String str1 = "12312312345";
        String str2 = "5";
        System.out.println("index = " + violentMatch(str1, str2));
    }


    /**
     * 暴力匹配
     *
     * @param str1 父串
     * @param str2 子串
     * @return 首次匹配位置
     */
    public static int violentMatch(String str1, String str2) {
        if (str2 == null || "".equals(str2)) {
            return 0;
        }

        // 字符串转为字符数组
        char[] c1 = str1.toCharArray();
        char[] c2 = str2.toCharArray();
        // 定义指针，开始遍历
        int i = 0, j = 0;
        while (i < c1.length && j < c2.length) {
            if (c1[i] == c2[j]) {
                // 向后遍历
                i++;
                j++;
            } else {
                // c1返回初次匹配位置的下一位
                i = i - j + 1;
                // c2从头开始匹配
                j = 0;
            }
        }

        // 判断是否成功全部匹配
        if (j == c2.length) {
            return i - j;
        }
        // 匹配失败
        return -1;
    }
}
